#!/bin/bash


远程复制  默认端口
Linux scp命令

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令，是 cp 命令的加强版


常见命令

    基本用法

        scp [可选参数] 源文件/目录 目标文件/目录


    常用的可选参数

        -P 大写的，指定端口号
        -r 递归复制整个目录
        -v 显示所有 debug 信息
        -q 不显示传输进度
        -C 大写的，启用压缩
        -4 使用 IPv4 地址
        -6 使用 IPv6 地址
        -1 强制scp命令使用协议ssh1
        -2 强制scp命令使用协议ssh2
        -4 强制scp命令只使用IPv4寻址
        -6 强制scp命令只使用IPv6寻址
        -B 使用批处理模式（传输过程中不询问传输口令或短语）
        -C 允许压缩。（将-C标志传递给ssh，从而打开压缩功能）
        -p 留原文件的修改时间，访问时间和访问权限。
        -q 不显示传输进度条。
        -r 递归复制整个目录。
        -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接，验证和配置问题。
        -c cipher 以cipher将数据传输进行加密，这个选项将直接传递给ssh。
        -F ssh_config 指定一个替代的ssh配置文件，此参数直接传递给ssh。
        -i identity_file 从指定文件中读取传输时使用的密钥文件，此参数直接传递给ssh。
        -l limit 限定用户所能使用的带宽，以Kbit/s为单位。
        -o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式，
        -P port 注意是大写的P, port是指定数据传输用到的端口号
        -S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项







    本地复制到远程
        scp -r local_folder remote_username@remote_ip:remote_folder
        或者
        scp -r local_folder remote_ip:remote_folder


        第1个指定了用户名，命令执行后需要再输入密码；
        第2个没有指定用户名，命令执行后需要输入用户名和密码；

        例如：
            复制文件

                scp  /root/test.txt     root@192.168.1.10:/root/
                将   /root/test.txt 拷贝到 192.168.1.10 的  /root/ 目录下，文件名还是 text.txt，使用 root 用户，此时会提示输入远程 root 用户的密码。

            复制文件并重命名
                scp  /root/test.txt       root@192.168.1.10:/root/test1.txt
                将   /root/test.txt 拷贝到 192.168.1.10 的    /root/ 目录下，文件名还是 text1.txt，使用 root 用户，此时会提示输入远程 root 用户的密码。

            复制整个目录
                scp  -r  /root/test/     root@192.168.1.10:/root/
                将整个目录 /root/test/ 复制到 192.168.1.10 的 /root/ 下，即递归的复制，使用 root 用户，此时会提示输入远程 root 用户的密码。

    远程复制到本地
        scp root@192.168.1.10:/root/test.txt /root/test.txt
        远程复制到本地 与 从本地复制到远程命令类似，不同的是 远程文件作为源文件在前，本地文件作为目标文件在后。





避免每次都输入远程密码
    方法一：
        scp 默认使用 ssh， 每次传输都需要输入远程用户的密码，十分麻烦。但是如果两台机器之间建立了信任关系后，则不需要输入密码，如下
            首先在本机上生成配对密钥
                ssh-keygen -t rsa
            然后将本机上的公钥文件拷贝到远程机器，并命名为 authorized_keys
                scp /root.ssh/id_rsa.pub root@192.168.1.10:/root/.ssh/authorized_keys
            以后再传文件就不用输入密码了，包括使用 ssh, sftp 时，都不用输入密码了。

    方法二：
        安装sshpass，scp结合sshpass可带上密码传输文件
            sshpass -p mima scp root@149.xx.xx.xx:/var/log/tpcc_mysql.rtx  a.rtx
            这个方法有个缺点，还是需要每次都输且会暴露明文密码
    注：IP不好记，也可以直接使用绑定的域名













远程复制  指定端口 -P 是大写的P
    scp -P 8122 root@192.168.1.10:/root/test.txt /root/test.txt
    scp -P 8122 -r  /home/test/     root@192.168.1.10:/home/
    scp -P 8122 -r -i  ~/zwn/cert/qingyungang.pem /home/test/     root@192.168.1.10:/home/
















